package cn.echo.consul.manager.service;


import cn.echo.consul.manager.entity.KeyValueItem;
import cn.echo.consul.manager.entity.KeyValueRecord;

import java.util.List;

/**
 * <p>
 * KeyValue 服务实现接口
 * </p>
 *
 * @author lonyee
 */
public interface KeyValueItemService {

    /**
     * 获取KeyValue配置列表
     */
    List<KeyValueItem> getKeyValueItems(String projectId, String env);

    /**
     * 保存KeyValue配置信息
     */
    void modifyKeyValueItem(String userId, String projectId, String env, String key, String value);

    /**
     * 保存KeyValue YAML配置信息
     */
    void modifyKeyValueYml(String userId, String projectId, String env, String yamlSource, Boolean replace);
    /**
     * 移除KeyValue配置信息
     */
    void removeKeyValueItem(String userId, String projectId, String env, String key);
    /**
     * 获取YAML配置格式
     */
    String getYaml(String projectId, String env);

    /**
     * KeyValue配置YAML格式化
     */
    void formatYaml(String projectId, String env);

    /**
     * 获取历史记录
     */
    List<KeyValueRecord> getKeyValueRecords(String projectId, String env, String key);

    /**
     * 保存历史记录
     */
    void saveKeyValueRecord(String userId, String projectId, String env, String key, String oldValue, String newValue);
}
